package cn.iocoder.yudao.module.wine.controller.admin.supplyorder.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 供求订单管理 Response VO")
@Data
@ExcelIgnoreUnannotated
public class SupplyOrderRespVO {

    @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "697")
    @ExcelProperty("订单编号")
    private Long id;

    @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单流水号")
    private String no;

    @Schema(description = "订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("订单类型")
    private Integer type;

    @Schema(description = "订单来源终端", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单来源终端")
    private Integer terminal;


    @Schema(description = "卖方用户ID(卖方ID)", example = "14038")
    @ExcelProperty("卖方用户ID(卖方ID)")
    private Long saleUserId;

    @Schema(description = "卖方备注", example = "你猜")
    @ExcelProperty("卖方备注")
    private String saleUserRemark;

    @Schema(description = "卖方收货时间", example = "你猜")
    @ExcelProperty("卖方收货时间")
    private LocalDateTime saleReceiveTime;

    @Schema(description = "购买用户编号(买方ID)", requiredMode = Schema.RequiredMode.REQUIRED, example = "22941")
    @ExcelProperty("购买用户编号(买方ID)")
    private Long buyUserId;

    @Schema(description = "购买用户备注", example = "你说的对")
    @ExcelProperty("购买用户备注")
    private String buyUserRemark;

    @Schema(description = "订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("订单状态")
    private Integer status;

    @Schema(description = "购买的数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30762")
    @ExcelProperty("购买的数量")
    private Integer productCount;

    @Schema(description = "购买的箱量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30762")
    @ExcelProperty("购买的箱量")
    private Integer productQuantity;

    @Schema(description = "取消类型", example = "1")
    @ExcelProperty("取消类型")
    private Integer cancelType;

    @Schema(description = "交易类型：1--担责，2--担保", example = "2")
    @ExcelProperty("交易类型：1--担责，2--担保")
    private Integer tradeType;

    @Schema(description = "是否评价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("是否评价")
    private Integer commentStatus;

    @Schema(description = "推广人编号", example = "6738")
    @ExcelProperty("推广人编号")
    private Long brokerageUserId;

    @Schema(description = "支付订单编号", example = "4563")
    @ExcelProperty("支付订单编号")
    private Long payOrderId;

    @Schema(description = "货款是否已支付：[0:未支付 1:已经支付过]", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("货款是否已支付：[0:未支付 1:已经支付过]")
    private Integer payStatus;

    @Schema(description = "订单支付时间")
    @ExcelProperty("订单支付时间")
    private LocalDateTime payTime;

    @Schema(description = "支付成功的支付渠道")
    @ExcelProperty("支付成功的支付渠道")
    private String payChannelCode;

    @Schema(description = "订单完成时间")
    @ExcelProperty("订单完成时间")
    private LocalDateTime finishTime;

    @Schema(description = "订单取消时间")
    @ExcelProperty("订单取消时间")
    private LocalDateTime cancelTime;

    @Schema(description = "商品原价（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "27080")
    @ExcelProperty("商品原价（总），单位：分")
    private Integer totalPrice;

    @Schema(description = "应付金额（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "15120")
    @ExcelProperty("应付金额（总），单位：分")
    private Integer payPrice;

    @Schema(description = "保费金额（总），单位：分", example = "26150")
    @ExcelProperty("保费金额（总），单位：分")
    private Integer premiumPrice;

    @Schema(description = "保费是否已支付：[0:未支付 1:已经支付过]", example = "2")
    @ExcelProperty("保费是否已支付：[0:未支付 1:已经支付过]")
    private Integer premiumStatus;


    @Schema(description = "配送类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("配送类型")
    private Integer deliveryType;

    @Schema(description = "发货地址", example = "发货地址")
    @ExcelProperty("发货地址")
    private Integer deliveryAddress;

    @Schema(description = "发货时间")
    @ExcelProperty("发货时间")
    private LocalDateTime deliveryTime;

    @Schema(description = "发货视频")
    @ExcelProperty("发货视频")
    private String deliveryVideo;

    @Schema(description = "发货凭证图")
    @ExcelProperty("发货凭证图")
    private String deliveryImages;

    @Schema(description = "发货物流公司编号", example = "1427")
    @ExcelProperty("发货物流公司编号")
    private Long logisticsId;

    @Schema(description = "发货物流公司单号")
    @ExcelProperty("发货物流公司单号")
    private String logisticsNo;


    @Schema(description = "收货时间")
    @ExcelProperty("收货时间")
    private LocalDateTime receiveTime;

    @Schema(description = "收件人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("收件人名称")
    private String receiverName;

    @Schema(description = "收件人手机", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("收件人手机")
    private String receiverMobile;

    @Schema(description = "收件人地区编号", example = "25107")
    @ExcelProperty("收件人地区编号")
    private Integer receiverAreaId;

    @Schema(description = "收件人公司名称", example = "赵六")
    @ExcelProperty("收件人公司名称")
    private String receiverCompanyName;

    @Schema(description = "收件人详细地址")
    @ExcelProperty("收件人详细地址")
    private String receiverDetailAddress;

    @Schema(description = "验货视频")
    @ExcelProperty("验货视频")
    private String receiverVideo;



    @Schema(description = "平台操作状态：0--未收款，1--已收款，2--已打款，4--有纠纷", example = "2")
    @ExcelProperty("平台操作状态：0--未收款，1--已收款，2--已打款，4--有纠纷")
    private Integer operateStatus;

    @Schema(description = "平台操作备注", example = "随便")
    @ExcelProperty("平台操作备注")
    private String remark;



    @Schema(description = "退货物流单号", example = "退货物流单号")
    private String salesLogisticsNo;

    @Schema(description = "退货图片", example = "退货图片")
    private String salesImages;

    @Schema(description = "退货时间", example = "退货时间")
    private LocalDateTime salesTime;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    // 联表数据

    @Schema(description = "卖方用户姓名", example = "14038")
    @ExcelProperty("卖方用户姓名")
    private String saleUserName;

    @Schema(description = "卖家昵称", example = "卖家昵称")
    private String saleUserNickName;

    @Schema(description = "卖家手机", example = "卖家手机")
    private String saleUserMobile;

    @Schema(description = "卖家公司名称", example = "卖家公司名称")
    private String saleUserCompanyName;

    @Schema(description = "卖家公司地址", example = "卖家公司地址")
    private String saleUserCompanyAddress;


    @Schema(description = "购买用户姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "22941")
    @ExcelProperty("购买用户姓名")
    private String buyUserName;

    @Schema(description = "买家昵称", example = "买家昵称")
    private String buyUserNickName;

    @Schema(description = "买家手机", example = "买家手机")
    private String buyUserMobile;

    @Schema(description = "买家公司名称", example = "买家公司名称")
    private String buyUserCompanyName;

    @Schema(description = "买家公司地址", example = "买家公司地址")
    private String buyUserCompanyAddress;


    @Schema(description = "卖家保费是否已支付：[0:未支付 1:已经支付过]", example = "2")
    @ExcelProperty("卖家保费是否已支付：[0:未支付 1:已经支付过]")
    private Integer salePremiumStatus;

    @Schema(description = "卖家保费支付时间", example = "2")
    @ExcelProperty("卖家保费支付时间")
    private LocalDateTime saleTradeTime;

    @Schema(description = "卖家公司地址", example = "卖家公司地址")
    private String saleTradeNo;

    @Schema(description = "买家保费是否已支付：[0:未支付 1:已经支付过]", example = "2")
    @ExcelProperty("买家保费是否已支付：[0:未支付 1:已经支付过]")
    private Integer buyPremiumStatus;

    @Schema(description = "买家保费支付时间", example = "2")
    @ExcelProperty("买家保费支付时间")
    private LocalDateTime buyTradeTime;

    @Schema(description = "买家公司地址", example = "买家公司地址")
    private String buyTradeNo;
}